package com.testing.class1;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;
import java.time.Duration;

/**
 * @Classname SeleniumDemo
 * @Description 类型说明
 * @Date 2022/9/30 21:25
 * @Created by 特斯汀Roy
 */
public class SeleniumDemo {
    public static void main(String[] args) throws InterruptedException, IOException {
        //1、通过启动webDriver来启动浏览器
//        System.setProperty("webdriver.chrome.driver","DriverExe\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();

//        //启动火狐
//        System.setProperty("webdriver.gecko.driver","DriverExe\\geckodriver.exe");
//        WebDriver driver = new FirefoxDriver();

//        启动IE
//        System.setProperty("webdriver.ie.driver","DriverExe\\IEDriverServer.exe");
//        WebDriver driver=new InternetExplorerDriver();

        //启动Edge
        System.setProperty("webdriver.edge.driver","DriverExe\\msedgeDriver.exe");
//        WebDriver driver=new EdgeDriver();


        //设置隐式等待，让元素定位的时候，有10秒钟机会反复尝试，10秒过了没找到，再报错。
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

        //访问百度
        driver.get("https://www.baidu.com");
        //等待指定时长。
//        Thread.sleep(3000);
//        driver.get("https://music.163.com");
//        Thread.sleep(1000);
//        //用navigate方法操作Navigation 调用里面的back方法，返回上个网页。
//        driver.navigate().back();

        //搜索selenium
        //定位元素
        WebElement searchInput = driver.findElement(By.cssSelector("#kw"));        //操作元素
        //操作元素
        searchInput.sendKeys("selenium");
        //点击百度一下
        driver.findElement(By.id("su")).click();
        Thread.sleep(2000);

        //断言：
        //获取页面标题。
        String title = driver.getTitle();
        System.out.println("标题是："+ title);
        if(title.startsWith("selenium")){
            System.out.println("测试成功");
        }else{
            System.out.println("测试失败");
        }

        WebElement input2 = driver.findElement(By.cssSelector("#kw"));
        //获取元素属性
        String value = input2.getAttribute("value");
        System.out.println("获取到的输入框value属性是"+value);

        //获取元素文本,可以获取到元素中子元素的文本内容。也可以用getAttribute("innerText")
        //定位第一个元素
        String text = driver.findElement(By.xpath("//div[@id='content_left']/div[1]//h3//a")).getText();
        System.out.println("第一个元素文本内容是"+text);

        //判断页面html中包含selenium
//        System.out.println(driver.getPageSource());

        //尝试通过表达式定位一个元素，判断是否成功。
        try {
            driver.findElement(By.xpath("//a[contains(string(),'信息科技有限公司 - 企查查')]"));
            System.out.println("测试成功");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("测试失败");
        }

        //搜索特斯汀
        //清空输入框内容
        input2.clear();
        input2.sendKeys("特斯汀");
        //直接让输入框提交表单信息，完成搜索，但是还是建议用点击操作，模拟用户实际行为。
        input2.submit();

        //尝试通过表达式定位一个元素，判断是否成功。
        try {
            driver.findElement(By.xpath("//a[contains(string(),'信息科技有限公司 - 企查查')]"));
            System.out.println("测试成功");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("测试失败");
        }

        //关闭浏览器,并且结束chromedriver的进程。
        driver.quit();

        //杀掉所有的chromedriver进程。
        Runtime.getRuntime().exec("taskkill /f /im chromedriver.exe");









    }

}
